ARM: GICv3 ITS: introduce device mapping
authorAndre Przywara <andre.przywara@arm.com>
Fri, 7 Apr 2017 22:08:01 +0000 (23:08 +0100)
committerStefano Stabellini <sstabellini@kernel.org>
Fri, 7 Apr 2017 22:15:58 +0000 (15:15 -0700)
commit69082e1c210d7bdba082e75c89951d9a320d88e1
tree9b66228fffaaf46e1087d699a401e89e28dad265
parentfa0346ae663f582cd742683d2f4562c3c9b758f9
ARM: GICv3 ITS: introduce device mapping

The ITS uses device IDs to map LPIs to a device. Dom0 will later use
those IDs, which we directly pass on to the host.
For this we have to map each device that Dom0 may request to a host
ITS device with the same identifier.
Allocate the respective memory and enter each device into an rbtree to
later be able to iterate over it or to easily teardown guests.
Because device IDs are per ITS, we need to identify a virtual ITS. We
use the doorbell address for that purpose, as it is a nice architectural
MSI property and spares us handling with opaque pointer or break
the VGIC abstraction.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
Reviewed-by: Julien Grall <julien.grall@arm.com>
xen/arch/arm/gic-v3-its.c
xen/arch/arm/vgic-v3-its.c
xen/include/asm-arm/domain.h
xen/include/asm-arm/gic_v3_its.h